package leecode

func rightSideView(root *TreeNode) (result []int) {
	if root == nil {
		return
	}
	dqueue := []*TreeNode{root}
	for len(dqueue) != 0 {
		size := len(dqueue)
		for i := 0; i < size; i++ {
			if dqueue[i].Left != nil {
				dqueue = append(dqueue, dqueue[i].Left)
			}
			if dqueue[i].Right != nil {
				dqueue = append(dqueue, dqueue[i].Right)
			}
			// 取每层的最后一个元素 , 添加到结果集中
			if i == size-1 {
				result = append(result, dqueue[i].Val)
			}
		}
		//移除队列中上一层的元素
		dqueue = dqueue[size:]
	}
	return
}
